From e725b05f79384246c0333503173ce770312eead5 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Sun, 8 Sep 2013 16:39:49 -0400 Subject: [PATCH] Add a testcase for custom levels in GtkLevelBar This is related to https://bugzilla.gnome.org/show_bug.cgi?id=707695 --- tests/Makefile.am | 2 ++ tests/testlevelbar.c | 80 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 82 insertions(+) create mode 100644 tests/testlevelbar.c diff --git a/tests/Makefile.am b/tests/Makefile.am index 78acc6f5a1..5478b9f0be 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -74,6 +74,7 @@ noinst_PROGRAMS = $(TEST_PROGS) \ testkineticscrolling \ testlist \ testlist2 \ + testlevelbar \ testlockbutton \ testmenubutton \ testmountoperation \ @@ -204,6 +205,7 @@ testimage_DEPENDENCIES = $(TEST_DEPS) testkineticscrolling_DEPENDENCIES = $(TEST_DEPS) testlist_DEPENDENCIES = $(TEST_DEPS) testlist2_DEPENDENCIES = $(TEST_DEPS) +testlevelbar_DEPENDENCIES = $(TEST_DEPS) testlockbutton_DEPENDENCIES = $(TEST_DEPS) testmenubutton_DEPENDENCIES = $(TEST_DEPS) testmountoperation_DEPENDENCIES = $(TEST_DEPS) diff --git a/tests/testlevelbar.c b/tests/testlevelbar.c new file mode 100644 index 0000000000..51b4af680b --- /dev/null +++ b/tests/testlevelbar.c @@ -0,0 +1,80 @@ +#include + +static GtkWidget * +create_level_bar (void) +{ + GtkWidget *level_bar; + + level_bar = gtk_level_bar_new (); + + gtk_level_bar_add_offset_value (GTK_LEVEL_BAR (level_bar), + GTK_LEVEL_BAR_OFFSET_LOW, 0.10); + + gtk_level_bar_add_offset_value (GTK_LEVEL_BAR (level_bar), + "my-offset", 0.50); + + return level_bar; +} + +static void +add_custom_css (void) +{ + GtkCssProvider *provider; + const gchar data[] = + ".level-bar.fill-block.empty-fill-block.level-my-offset {" + " background-color: transparent;" + " background-image: none;" + " border-color: alpha(@theme_fg_color, 0.1);" + "}" + ".level-bar.fill-block.level-my-offset {" + " background-image: linear-gradient(to bottom," + " shade(magenta,0.9)," + " magenta," + " shade(magenta,0.85));" + "}"; + + provider = gtk_css_provider_new (); + gtk_css_provider_load_from_data (provider, data, -1, NULL); + gtk_style_context_add_provider_for_screen (gdk_screen_get_default (), + GTK_STYLE_PROVIDER (provider), + GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); +} + +static gboolean +increase_level (gpointer data) +{ + GtkLevelBar *bar = data; + gdouble value; + + value = gtk_level_bar_get_value (bar); + value += 0.01; + if (value >= 1.0) + value = 0.0; + gtk_level_bar_set_value (bar, value); + + return G_SOURCE_CONTINUE; +} + +int +main (int argc, char *argv[]) +{ + GtkWidget *window; + GtkWidget *bar; + + gtk_init (&argc, &argv); + + add_custom_css (); + + window = gtk_window_new (GTK_WINDOW_TOPLEVEL); + gtk_window_set_default_size (GTK_WINDOW (window), 500, 100); + bar = create_level_bar (); + g_object_set (bar, "margin", 20, NULL); + gtk_container_add (GTK_CONTAINER (window), bar); + gtk_widget_show_all (window); + + g_timeout_add (100, increase_level, bar); + gtk_main (); + + return 0; +} + -- 2.30.2